package com.hanyxx.file;

import java.io.File;
import java.util.Arrays;

/**
 * @author layman
 * @date 2021/3/4
 */
public class Demo04 {
    public static void main(String[] args) {
        File file= new File("D:\\下载的电影");
        // public String[] list()
        System.out.println(Arrays.toString(file.list()));
        System.out.println("---------------------------");
        // public File[] listFiles()
        System.out.println(Arrays.toString(file.listFiles()));
        System.out.println("---------------------------");

        // public String[] list(FilenameFilter filter)
        // 获取所有名称以.3gp结尾的文件和文件夹
        String[] list = file.list((File dir, String name) ->
                name.endsWith(".3gp")
        );
        System.out.println(Arrays.toString(list));
        System.out.println("---------------------------");

        // public File[] listFiles(FilenameFilter filter)
        // 获取所有名称以.avi结尾的文件和文件夹
        File[] files = file.listFiles((File dir, String name) ->
                name.endsWith(".avi")
        );
        System.out.println(Arrays.toString(files));
        System.out.println("---------------------------");

        //public File[] listFiles(FileFilter filter)
        // 获取文件名包含avi且不是文件夹，且文件大小大于40M，且可以修改的文件
        File[] files1 = file.listFiles((File pathname) ->{
            if(pathname.isDirectory()){
                return false;
            }
            // pathname.length() > 41943040L
            return pathname.getName().contains("avi")  && pathname.canWrite();
        });
        System.out.println(Arrays.toString(files1));
        System.out.println("---------------------------");

        // 获取系统所有盘符
        File[] files2 = File.listRoots();
        System.out.println(Arrays.toString(files2));

    }
}
